package cn.lg.soar.boot.fc.service;

import cn.lg.soar.boot.fc.entity.bo.UnitBo;
import cn.lg.soar.boot.fc.entity.vo.UnitEasyVo;
import cn.lg.soar.boot.fc.entity.vo.UnitVo;
import cn.lg.soar.common.model.HttpResult;
import cn.lg.soar.common.model.PageQuery;
import cn.lg.soar.common.model.PageResult;
import cn.lg.soar.database.base.service.IBaseService;
import cn.lg.soar.boot.fc.entity.Unit;
import cn.lg.soar.database.query.QueryParams;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * 单元表
 * @author ZhuanZ（无密码）
 * @since 2025-01-10
 * 开源项目：https://gitee.com/lgx1992/lg-soar 求star！请给我star！请帮我点个star！
 */
public interface UnitService extends IBaseService<Unit> {

    /**
     * 创建
     * @param unitBo
     * @return
     */
    HttpResult<Serializable> create (UnitBo unitBo);

    /**
     * 更新
     * @param unitBo
     * @return
     */
    HttpResult<Void> update (UnitBo unitBo);

    /**
     * 通过id查询数据
     * @param id
     * @return
     */
    Unit getData (Long id);

    /**
     * 通过id获取vo数据
     * @param id
     * @return
     */
    UnitVo getVoData (Long id);

    /**
     * 获取简单的vo
     * @param id
     * @return
     */
    UnitEasyVo getEasyVoData (Long id);

    /**
     * 翻页列表 当前模型vo
     * @param pageQuery
     * @param params
     * @return
     */
    PageResult<UnitVo> queryResultVo (PageQuery pageQuery, QueryParams params);

    /**
     * 通过拼接的校区id、楼栋id 获取到 对应的单元信息
     * @param params
     * @return
     */
    List<UnitVo> getListVoByOtherId (QueryParams params);

    List<Unit> getListByOtherId (QueryParams params);

    Unit getByCIDAndBIDAndName (Long campusId, Long buildingId, String name);

    /**
     * 导出表格
     * @param filename
     * @param params
     * @param resp
     */
    void exportExcel (String filename, QueryParams params, HttpServletResponse resp);

    /**
     * 导入房间信息
     * @param files
     * @return
     */
    HttpResult<Void> importExcel (MultipartFile files);

    /**
     * 拖拽排序
     */
    HttpResult<Serializable> updateSort(List<Map<String, Integer>> sortedData);

}

